System.Collections.Generic.HashSet<T> 클래스

비고

이 문서는 이 API에 대한 참조 설명서를 보충하는 추가 설명을 제공합니다.

클래스는 HashSet<T> 고성능 집합 작업을 제공합니다. 집합은 중복 요소가 없고 요소가 특정 순서가 없는 컬렉션입니다.

개체의 HashSet<T> 용량은 개체가 보유할 수 있는 요소의 수입니다. HashSet<T> 개체에 요소가 추가되면 개체의 용량이 자동으로 증가합니다.

클래스는 HashSet<T> 수학 집합의 모델을 기반으로 하며 또는 Dictionary<TKey,TValue> 컬렉션의 Hashtable 키에 액세스하는 것과 유사한 고성능 집합 작업을 제공합니다. 간단히 말하면 클래스를 HashSet<T> 값이 없는 컬렉션으로 Dictionary<TKey,TValue> 간주할 수 있습니다.

HashSet<T> 컬렉션이 정렬되지 않았으므로 중복 요소를 포함할 수 없습니다. 순서 또는 요소 중복이 애플리케이션의 성능보다 더 중요한 경우 메서드와 함께 클래스를 List<T>Sort 사용하는 것이 좋습니다.

HashSet<T> 는 집합 더하기(공용 구조체) 및 집합 빼기와 같은 많은 수학 집합 연산을 제공합니다. 다음 표에서는 제공된 HashSet<T> 연산과 해당 수학 연산을 나열합니다.

HashSet 작업 그에 상응하는 수학
UnionWith 공용 구조체 또는 집합 추가
IntersectWith 교차점
ExceptWith 빼기 설정
SymmetricExceptWith 대칭 차이

나열된 집합 작업 외에도 클래스는 집합 같음, HashSet<T> 집합 겹침 및 집합이 다른 집합의 하위 집합인지 또는 상위 집합인지를 결정하는 메서드를 제공합니다.

.NET Framework만 해당: 매우 큰 HashSet<T> 개체의 경우 구성 요소의 enabled 특성을 런타임 환경에서 설정 <gcAllowVeryLargeObjects> 하여 64비트 시스템에서 최대 용량을 20억 요소로 true 늘릴 수 있습니다.

HashSet<T> 클래스가 ISet<T> 인터페이스를 구현합니다.

HashSet 및 LINQ 집합 작업

LINQ는 Distinct, Union, Intersect, 및 Except 집합 작업에 대한 액세스를 IEnumerable 또는 IQueryable 인터페이스를 구현하는 모든 데이터 원본에 제공합니다. HashSet<T>는 더 크고 강력한 집합 작업 컬렉션을 제공합니다. 예를 들어 다음과 HashSet<T> 같은 IsSubsetOfIsSupersetOf비교를 제공합니다.

LINQ 집합 작업과 HashSet<T> 작업 간의 주요 차이점은 LINQ 집합 작업이 항상 새 IEnumerable<T> 컬렉션을 반환하는 반면 HashSet<T> 동일한 메서드는 현재 컬렉션을 수정한다는 것입니다.

일반적으로 새 집합을 만들어야 하거나 애플리케이션이 제공된 집합 작업에만 액세스해야 하는 경우 모든 IEnumerable<T> 컬렉션 또는 배열에서 LINQ 집합 작업을 사용하는 것으로 충분합니다. 그러나 애플리케이션에 추가 집합 작업에 대한 액세스가 필요하거나 새 컬렉션을 만드는 것이 바람직하지 않거나 필요하지 않은 경우 클래스를 HashSet<T> 사용합니다.

다음 표에서는 HashSet<T> 작업과 해당 LINQ 집합 작업을 보여줍니다.

HashSet 작업 LINQ 동등한 것
UnionWith Union
IntersectWith Intersect
ExceptWith Except
제공되지 않습니다. Distinct
SymmetricExceptWith 제공되지 않습니다.
Overlaps 제공되지 않습니다.
IsSubsetOf 제공되지 않습니다.
IsProperSubsetOf 제공되지 않습니다.
IsSupersetOf 제공되지 않습니다.
IsProperSupersetOf 제공되지 않습니다.
SetEquals 제공되지 않습니다.